package com.skyhigh.web.webservice.domain;

// Generated 26/03/2012 11:56:15 PM by Hibernate Tools 3.4.0.CR1

import java.util.HashSet;
import java.util.Set;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.TableGenerator;
import javax.persistence.UniqueConstraint;

import org.hibernate.annotations.Proxy;

/**
 * Pais generated by hbm2java
 */
@Entity
@Table(name = "pais", catalog = "proyecto_metodologia", uniqueConstraints = {
		@UniqueConstraint(columnNames = "nombre"),
		@UniqueConstraint(columnNames = "codigo") })
@TableGenerator(name="generatorName", 
table="secuencia",  
pkColumnName="codigo",  
pkColumnValue = "Pais.id",
valueColumnName="valor",  
allocationSize=100)
@Proxy( lazy=false )
public class Pais implements java.io.Serializable {

	private int idPais;
	private String nombre;
	private String codigo;
	private Set<Estado> estados = new HashSet<Estado>(0);
	private Set<Carga> cargasForIdPaisDestino = new HashSet<Carga>(0);
	private Set<Contenedor> contenedorsForIdPaisDestino = new HashSet<Contenedor>(
			0);
	private Set<Contenedor> contenedorsForIdPaisProcedencia = new HashSet<Contenedor>(
			0);
	private Set<Carga> cargasForIdPaisProcedencia = new HashSet<Carga>(0);

	public Pais() {
	}

	public Pais(int idPais, String nombre, String codigo) {
		this.idPais = idPais;
		this.nombre = nombre;
		this.codigo = codigo;
	}

	public Pais(int idPais, String nombre, String codigo, Set<Estado> estados,
			Set<Carga> cargasForIdPaisDestino,
			Set<Contenedor> contenedorsForIdPaisDestino,
			Set<Contenedor> contenedorsForIdPaisProcedencia,
			Set<Carga> cargasForIdPaisProcedencia) {
		this.idPais = idPais;
		this.nombre = nombre;
		this.codigo = codigo;
		this.estados = estados;
		this.cargasForIdPaisDestino = cargasForIdPaisDestino;
		this.contenedorsForIdPaisDestino = contenedorsForIdPaisDestino;
		this.contenedorsForIdPaisProcedencia = contenedorsForIdPaisProcedencia;
		this.cargasForIdPaisProcedencia = cargasForIdPaisProcedencia;
	}

	@Id
	@Column(name = "idPais", unique = true, nullable = false)
	@GeneratedValue(strategy=GenerationType.TABLE, generator="generatorName")
	public int getIdPais() {
		return this.idPais;
	}

	public void setIdPais(int idPais) {
		this.idPais = idPais;
	}

	@Column(name = "nombre", unique = true, nullable = false)
	public String getNombre() {
		return this.nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	@Column(name = "codigo", unique = true, nullable = false)
	public String getCodigo() {
		return this.codigo;
	}

	public void setCodigo(String codigo) {
		this.codigo = codigo;
	}

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "pais")
	public Set<Estado> getEstados() {
		return this.estados;
	}

	public void setEstados(Set<Estado> estados) {
		this.estados = estados;
	}

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "paisDestino")
	public Set<Carga> getCargasForIdPaisDestino() {
		return this.cargasForIdPaisDestino;
	}

	public void setCargasForIdPaisDestino(Set<Carga> cargasForIdPaisDestino) {
		this.cargasForIdPaisDestino = cargasForIdPaisDestino;
	}

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "paisDestino")
	public Set<Contenedor> getContenedorsForIdPaisDestino() {
		return this.contenedorsForIdPaisDestino;
	}

	public void setContenedorsForIdPaisDestino(
			Set<Contenedor> contenedorsForIdPaisDestino) {
		this.contenedorsForIdPaisDestino = contenedorsForIdPaisDestino;
	}

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "paisProcedencia")
	public Set<Contenedor> getContenedorsForIdPaisProcedencia() {
		return this.contenedorsForIdPaisProcedencia;
	}

	public void setContenedorsForIdPaisProcedencia(
			Set<Contenedor> contenedorsForIdPaisProcedencia) {
		this.contenedorsForIdPaisProcedencia = contenedorsForIdPaisProcedencia;
	}

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "paisProcedencia")
	public Set<Carga> getCargasForIdPaisProcedencia() {
		return this.cargasForIdPaisProcedencia;
	}

	public void setCargasForIdPaisProcedencia(
			Set<Carga> cargasForIdPaisProcedencia) {
		this.cargasForIdPaisProcedencia = cargasForIdPaisProcedencia;
	}

}
